package com.redisbynetty.commands;

import io.netty.buffer.ByteBufUtil;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.redis.FullBulkStringRedisMessage;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

/**
 * desc:
 *
 * @author : caokunliang
 * creat_date: 2019/7/12 0012
 * creat_time: 19:57
 **/
@Slf4j
public class CommandsCmdProcessorImpl implements CommandProcessor {
    public static final String commands = "*172\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "cluster\r\n" +
            ":-2\r\n" +
            "*1\r\n" +
            "+admin\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$9\r\n" +
            "georadius\r\n" +
            ":-6\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "lpushx\r\n" +
            ":3\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "pttl\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$12\r\n" +
            "hincrbyfloat\r\n" +
            ":4\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$9\r\n" +
            "sismember\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "hlen\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "flushdb\r\n" +
            ":1\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$11\r\n" +
            "sunionstore\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$11\r\n" +
            "zrangebylex\r\n" +
            ":-4\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "info\r\n" +
            ":-1\r\n" +
            "*2\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$14\r\n" +
            "restore-asking\r\n" +
            ":-4\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+asking\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "lrem\r\n" +
            ":4\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "sinter\r\n" +
            ":-2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+sort_for_script\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "sscan\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+random\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "strlen\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "shutdown\r\n" +
            ":-1\r\n" +
            "*3\r\n" +
            "+admin\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "msetnx\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":2\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "rpop\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$11\r\n" +
            "sinterstore\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "expireat\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "bitfield\r\n" +
            ":-2\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "hkeys\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+sort_for_script\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "evalsha\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+noscript\r\n" +
            "+movablekeys\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$11\r\n" +
            "unsubscribe\r\n" +
            ":-1\r\n" +
            "*4\r\n" +
            "+pubsub\r\n" +
            "+noscript\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "geopos\r\n" +
            ":-2\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "getrange\r\n" +
            ":4\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "zcard\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "script\r\n" +
            ":-2\r\n" +
            "*1\r\n" +
            "+noscript\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "publish\r\n" +
            ":3\r\n" +
            "*4\r\n" +
            "+pubsub\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "replconf\r\n" +
            ":-1\r\n" +
            "*4\r\n" +
            "+admin\r\n" +
            "+noscript\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "sadd\r\n" +
            ":-3\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "hstrlen\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "select\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+loading\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "linsert\r\n" +
            ":5\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$16\r\n" +
            "zremrangebyscore\r\n" +
            ":4\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "type\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "zcount\r\n" +
            ":4\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "substr\r\n" +
            ":4\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "brpop\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+noscript\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "incrby\r\n" +
            ":3\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "bitcount\r\n" +
            ":-2\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "migrate\r\n" +
            ":-6\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+movablekeys\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "setbit\r\n" +
            ":4\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "lpush\r\n" +
            ":-3\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$9\r\n" +
            "rpoplpush\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":2\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "latency\r\n" +
            ":-2\r\n" +
            "*4\r\n" +
            "+admin\r\n" +
            "+noscript\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "rpush\r\n" +
            ":-3\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$9\r\n" +
            "pexpireat\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "zrevrank\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$9\r\n" +
            "zrevrange\r\n" +
            ":-4\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$12\r\n" +
            "punsubscribe\r\n" +
            ":-1\r\n" +
            "*4\r\n" +
            "+pubsub\r\n" +
            "+noscript\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "append\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "lset\r\n" +
            ":4\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "zrem\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "smembers\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+sort_for_script\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "geohash\r\n" +
            ":-2\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "lastsave\r\n" +
            ":1\r\n" +
            "*2\r\n" +
            "+random\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "scan\r\n" +
            ":-2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+random\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "zrank\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "pfmerge\r\n" +
            ":-2\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "monitor\r\n" +
            ":1\r\n" +
            "*2\r\n" +
            "+admin\r\n" +
            "+noscript\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "expire\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "ping\r\n" +
            ":-1\r\n" +
            "*2\r\n" +
            "+stale\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "hincrby\r\n" +
            ":4\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$14\r\n" +
            "zremrangebylex\r\n" +
            ":4\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$11\r\n" +
            "srandmember\r\n" +
            ":-2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+random\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "pubsub\r\n" +
            ":-2\r\n" +
            "*4\r\n" +
            "+pubsub\r\n" +
            "+random\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$15\r\n" +
            "zremrangebyrank\r\n" +
            ":4\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "role\r\n" +
            ":1\r\n" +
            "*3\r\n" +
            "+noscript\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "wait\r\n" +
            ":3\r\n" +
            "*1\r\n" +
            "+noscript\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$17\r\n" +
            "georadiusbymember\r\n" +
            ":-5\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "object\r\n" +
            ":3\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":2\r\n" +
            ":2\r\n" +
            ":2\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "decr\r\n" +
            ":2\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "pfadd\r\n" +
            ":-2\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$10\r\n" +
            "pfselftest\r\n" +
            ":1\r\n" +
            "*1\r\n" +
            "+admin\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "spop\r\n" +
            ":-2\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+random\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "debug\r\n" +
            ":-1\r\n" +
            "*2\r\n" +
            "+admin\r\n" +
            "+noscript\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "smove\r\n" +
            ":4\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":2\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "llen\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "multi\r\n" +
            ":1\r\n" +
            "*2\r\n" +
            "+noscript\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "sdiff\r\n" +
            ":-2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+sort_for_script\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "getset\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "hscan\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+random\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "save\r\n" +
            ":1\r\n" +
            "*2\r\n" +
            "+admin\r\n" +
            "+noscript\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "slaveof\r\n" +
            ":3\r\n" +
            "*3\r\n" +
            "+admin\r\n" +
            "+noscript\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "auth\r\n" +
            ":2\r\n" +
            "*4\r\n" +
            "+noscript\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "rename\r\n" +
            ":3\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":1\r\n" +
            ":2\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "bgsave\r\n" +
            ":1\r\n" +
            "*1\r\n" +
            "+admin\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "decrby\r\n" +
            ":3\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "discard\r\n" +
            ":1\r\n" +
            "*2\r\n" +
            "+noscript\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "sunion\r\n" +
            ":-2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+sort_for_script\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "pfdebug\r\n" +
            ":-3\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "pexpire\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "sync\r\n" +
            ":1\r\n" +
            "*3\r\n" +
            "+readonly\r\n" +
            "+admin\r\n" +
            "+noscript\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "hvals\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+sort_for_script\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "zscan\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+random\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$3\r\n" +
            "get\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "exists\r\n" +
            ":-2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "lindex\r\n" +
            ":3\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "restore\r\n" +
            ":-4\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "sort\r\n" +
            ":-2\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+movablekeys\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "setex\r\n" +
            ":4\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "incr\r\n" +
            ":2\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$3\r\n" +
            "set\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "scard\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "mget\r\n" +
            ":-2\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$10\r\n" +
            "brpoplpush\r\n" +
            ":4\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+noscript\r\n" +
            ":1\r\n" +
            ":2\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "zscore\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "srem\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$14\r\n" +
            "zrevrangebylex\r\n" +
            ":-4\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "mset\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":2\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "setrange\r\n" +
            ":4\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "unwatch\r\n" +
            ":1\r\n" +
            "*2\r\n" +
            "+noscript\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "flushall\r\n" +
            ":1\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "renamenx\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":2\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "getbit\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$12\r\n" +
            "bgrewriteaof\r\n" +
            ":1\r\n" +
            "*1\r\n" +
            "+admin\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$9\r\n" +
            "subscribe\r\n" +
            ":-2\r\n" +
            "*4\r\n" +
            "+pubsub\r\n" +
            "+noscript\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "zrange\r\n" +
            ":-4\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "slowlog\r\n" +
            ":-2\r\n" +
            "*1\r\n" +
            "+admin\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "ltrim\r\n" +
            ":4\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "hget\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "hexists\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "rpushx\r\n" +
            ":3\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$16\r\n" +
            "zrevrangebyscore\r\n" +
            ":-4\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$9\r\n" +
            "zlexcount\r\n" +
            ":4\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "psync\r\n" +
            ":3\r\n" +
            "*3\r\n" +
            "+readonly\r\n" +
            "+admin\r\n" +
            "+noscript\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "time\r\n" +
            ":1\r\n" +
            "*2\r\n" +
            "+random\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$11\r\n" +
            "zunionstore\r\n" +
            ":-4\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+movablekeys\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "setnx\r\n" +
            ":3\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "hset\r\n" +
            ":4\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$3\r\n" +
            "ttl\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "hmget\r\n" +
            ":-3\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$3\r\n" +
            "del\r\n" +
            ":-2\r\n" +
            "*1\r\n" +
            "+write\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "dump\r\n" +
            ":2\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "move\r\n" +
            ":3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "watch\r\n" +
            ":-2\r\n" +
            "*2\r\n" +
            "+noscript\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "psetex\r\n" +
            ":4\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "lpop\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$11\r\n" +
            "incrbyfloat\r\n" +
            ":3\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$13\r\n" +
            "zrangebyscore\r\n" +
            ":-4\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "bitop\r\n" +
            ":-4\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":2\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$8\r\n" +
            "readonly\r\n" +
            ":1\r\n" +
            "*1\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "pfcount\r\n" +
            ":-2\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "command\r\n" +
            ":0\r\n" +
            "*2\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "hmset\r\n" +
            ":-4\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "dbsize\r\n" +
            ":1\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "zadd\r\n" +
            ":-4\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "touch\r\n" +
            ":-2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "geoadd\r\n" +
            ":-5\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "exec\r\n" +
            ":1\r\n" +
            "*2\r\n" +
            "+noscript\r\n" +
            "+skip_monitor\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$9\r\n" +
            "readwrite\r\n" +
            ":1\r\n" +
            "*1\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "eval\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+noscript\r\n" +
            "+movablekeys\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$11\r\n" +
            "zinterstore\r\n" +
            ":-4\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+movablekeys\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$9\r\n" +
            "randomkey\r\n" +
            ":1\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+random\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "persist\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "geodist\r\n" +
            ":-4\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "bitpos\r\n" +
            ":-3\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$10\r\n" +
            "psubscribe\r\n" +
            ":-2\r\n" +
            "*4\r\n" +
            "+pubsub\r\n" +
            "+noscript\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "config\r\n" +
            ":-2\r\n" +
            "*3\r\n" +
            "+admin\r\n" +
            "+loading\r\n" +
            "+stale\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$10\r\n" +
            "sdiffstore\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            ":1\r\n" +
            ":-1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "lrange\r\n" +
            ":4\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "hsetnx\r\n" +
            ":4\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "keys\r\n" +
            ":2\r\n" +
            "*2\r\n" +
            "+readonly\r\n" +
            "+sort_for_script\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "hdel\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$5\r\n" +
            "blpop\r\n" +
            ":-3\r\n" +
            "*2\r\n" +
            "+write\r\n" +
            "+noscript\r\n" +
            ":1\r\n" +
            ":-2\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "asking\r\n" +
            ":1\r\n" +
            "*1\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$4\r\n" +
            "echo\r\n" +
            ":2\r\n" +
            "*1\r\n" +
            "+fast\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$6\r\n" +
            "client\r\n" +
            ":-2\r\n" +
            "*2\r\n" +
            "+admin\r\n" +
            "+noscript\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            ":0\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "hgetall\r\n" +
            ":2\r\n" +
            "*1\r\n" +
            "+readonly\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            "*6\r\n" +
            "$7\r\n" +
            "zincrby\r\n" +
            ":4\r\n" +
            "*3\r\n" +
            "+write\r\n" +
            "+denyoom\r\n" +
            "+fast\r\n" +
            ":1\r\n" +
            ":1\r\n" +
            ":1\r\n";

    @Override
    public void process(ChannelHandlerContext ctx,BaseCommand baseCommand) {
        List<String> params = baseCommand.getParams();
        log.info("params:{}",params);

        FullBulkStringRedisMessage fullBulkStringRedisMessage = new FullBulkStringRedisMessage(ByteBufUtil.writeUtf8(ctx.alloc(),  commands));
        ctx.writeAndFlush(fullBulkStringRedisMessage);

    }
}
